"""
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
要求：
    1.采集《射雕英雄传》小说http://www.jinyongwang.com/she/，生成射雕英雄传.txt
    2.构建个性化词典，包括但不限于
        2.1人物（例如，完颜康、郭靖等）、
        2.2武功招式（例如，降龙十八掌等）、
        2.3武功秘籍（如九阴真经等）、
        2.3地点（如桃花岛等）。
        2.4基于构建的个性化词典，采用结巴分词对采集的文本内容进行分词。
        2.5生成（1）射雕英雄传词典.txt（2）射雕英雄传-分词.txt
 步骤三（20分）：热度统计
分别统计出现频率最高的任务、武功秘籍、武功招式、地点等，每种至少给出前20个。使用柱状图展示。
提交物：报告中展示相关的数据图表
步骤3：（20）训练词向量：在切词的结果上进行词向量训练，训练完后，请至少分别给出郭靖、降龙十八掌、九阴真经、桃花岛等的前10个最相似的词，然后自由增加一些查询词。最好能根据词的性质，分别给出最相似的任务、武功招式、武功秘籍等。请尽量多给一些
提交物：报告中展示相关的数据图表
 步骤4：（15分）统计各种对象之间的关联关系，例如统计最经常和郭靖出现在一起的是哪几个人物？他经常使用的招式是什么？请自由发挥，多做一些有意义的统计结果出来。
提交物：报告中展示相关的数据图表
"""

import re
from urllib import request
import parsel
import requests


# todo 01


def Sprider_shediaoyingxiongzhuan():
    url = r'http://www.jinyongwang.com/she/'
    headers = {'User-Agent': r'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/'
                             r'537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
               }
    cookies = {'Cookie': r'fikker-reFC-PmZW=TS6QO76qxNHkl7VyIwNUZUKSbENMHy6A;'
               r'fikker-reFC-PmZW=TS6QO76qxNHkl7VyIwNUZUKSbENMHy6A;'
               r'UM_distinctid=17710781874118-07a041ee32b622-930346c-100200-17710781876f4;'
               r' CNZZDATA1261114680=649733857-1610887207-%7C1610887207;'
               r' Hm_lvt_581788f461708b27b0f6ad74c67039df=1610889042;'
               r' __gads=ID=3797d852f92bcddd-229aa587bfc5009a:T=1610888921:'
               r'RT=1610888921:S=ALNI_MZ1tm2vY0T9b0feqaUx_FwAtaEzww;'
               r'Hm_lpvt_581788f461708b27b0f6ad74c67039df=1610892321'
               }
    response = request.urlopen(url)
    html = response.read().decode('utf-8')
    result = parsel.Selector(html)
    result_list = result.xpath('//ul[@class="mlist"]')
    for i in result_list:
        name_list = result_list.xpath('./li/a').getall()
        # * 需要倒序，不能从0开始倒序，所以前后都需要+1，才能达到全部倒序的情况
        for i in range(1, len(name_list)+1):
            url = re.findall(r'.*<a href="/she/(.*)"', name_list[-i])[0]
            name = re.findall(r'.>(.+)<', name_list[-i])[0]
            # print(url, name)
            url_2 = 'http://www.jinyongwang.com/she/' + url
            # print(url2)
            # * 不带cookies会报错，所以这里需要带上
            response_2 = requests.get(
                url_2, headers=headers, cookies=cookies).text
            result_2 = parsel.Selector(response_2)
            result_list2 = result_2.xpath('//*[@id="vcon"]/p/text()').getall()
            with open(r'D:\Project\Exercise\2021-01-17\01.txt', 'a', encoding='utf-8') as f:
                f.writelines(name)
                # * 写入列表的内容
                f.writelines(result_list2)
                print('已经写完'+name)

# todo 02


if __name__ == "__main__":
    # ? 生成射雕英雄传.txt-01.txt
    # Sprider_shediaoyingxiongzhuan()
    pass
